package com.unity.bh3.service;

import com.unity.bh3.dto.FriendRequestDTO;
import com.unity.bh3.dto.UserInfoResponse;
import com.unity.bh3.dto.FriendMessageDTO;
import com.unity.bh3.dto.FriendListDTO;
import com.unity.bh3.model.FriendMessage;
import com.unity.bh3.model.UserStatus;
import java.util.List;

public interface FriendService {
    // 搜索玩家
    List<UserInfoResponse> searchUsers(String nickname, int limit);
    
    // 发送好友申请
    void sendFriendRequest(Long userId, Long friendId);
    
    // 处理好友申请
    void handleFriendRequest(Long userId, Long friendId, boolean accept);
    
    // 获取好友列表
    List<FriendListDTO> getFriendList(Long userId);
    
    // 获取好友申请列表
    List<FriendRequestDTO> getFriendRequests(Long userId);
    
    // 发送好友消息
    void sendMessage(Long senderId, Long receiverId, String content);
    
    // 获取未读消息
    List<FriendMessage> getUnreadMessages(Long userId);
    
    // 标记消息为已读
    void markMessageAsRead(Long messageId);
    
    // 标记与指定好友的所有消息为已读
    void markAllMessagesAsRead(Long userId, Long friendId);
    
    // 获取好友在线状态
    UserStatus getFriendStatus(Long friendId);
    
    // 更新用户在线状态
    void updateUserStatus(Long userId, boolean isOnline);
    
    // 获取与好友的历史消息
    List<FriendMessageDTO> getHistoryMessages(Long userId, Long friendId);
    
    // 删除好友
    void deleteFriend(Long userId, Long friendId);
}